package UseSet.UseTreeSet;

import java.util.Comparator;
import java.util.TreeSet;

public class TestTreeSet {
    public static void main(String[] args) {
        // TreeSet 可排序集合
        // practice01();
        // practice02();
        practice03();

    }
    // TreeSet排序集合的使用
    public static void practice01(){
        TreeSet<String> treeSet = new TreeSet<>();
        treeSet.add("a");
        treeSet.add("b");
        treeSet.add("ac");
        System.out.println(treeSet);
    }
    // TreeSet排序实现方式一：继承接口
    public static void practice02(){
        TreeSet<Student> treeSet = new TreeSet<>();
        Student s1 = new Student("小平","卖猪肉",19);
        Student s2 = new Student("小绿","卖烧饼",19);
        Student s3 = new Student("小红","卖锅盔",20);
        treeSet.add(s1);
        treeSet.add(s2);
        treeSet.add(s3);
        System.out.println(treeSet);

    }
    // TreeSet排序方式二
    public static void practice03(){
        // 匿名类的方式
        TreeSet<String> treeSet = new TreeSet<>(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                int i = o1.length() - o2.length();
                i = i==0 ? o1.compareTo(o2) : i;
                return i;
            }
        });
        treeSet.add("a");
        treeSet.add("abc");
        treeSet.add("bc");
        System.out.println(treeSet);

        // lambada表达式方式
        TreeSet<String> ts = new TreeSet<>((String o1,String o2)->{
            int i = o1.length()-o2.length();
            i = i==0 ? o1.compareTo(o2) : i;
            return i;
        });
        ts.add("a");
        ts.add("abc");
        ts.add("bc");
        System.out.println(ts);
    }




}
